#ifdef __WIN32__
#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include <new>
#include <windows.h>

using namespace std;

struct node {
    char map[15][25];
    int id;
    int zhadan;
};

int now=0;

int main();

struct node map[25] = {
    {
        {
            "####################",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
        },1,20
    },
    {
        {
            "  #                 ",
            "    ##   #          ",
            "   #  #     #       ",
            "   # #    #         ",
            "  #   #  # #        ",
            "       #  ##        ",
            "        #  #        ",
            "                    ",
            "          #         ",
            "                    ",
        },2,20
    },
    {
        {
            "                    ",
            "###          ##   # ",
            " # #    #   #       ",
            "            #       ",
            " #    #  #          ",
            "            #   #   ",
            "    #   #           ",
            "    #       #       ",
            "                    ",
            "                    ",
        },3,20
    },
    {
        {
            "           #        ",
            "                    ",
            "     #   #   #  #   ",
            "      #             ",
            "      # #  #        ",
            "   ##               ",
            "         #  # # #   ",
            "      #       #     ",
            "    #               ",
            "            #  #    ",
        },4,20
    },
    {
        {
            " #   #    #         ",
            "    #          #    ",
            "   #    #  #        ",
            "#         #     #   ",
            "    #      #        ",
            "        #           ",
            "    #     #   #     ",
            "         #   #      ",
            "             #      ",
            "                    ",
        },5,20
    },
    {
        {
            "            #       ",
            "    #               ",
            "  ###    #  #   #   ",
            "       #      #   # ",
            "  #     #  #        ",
            "                #   ",
            "       #            ",
            "           #        ",
            "     #      #       ",
            "       #            ",
        },6,20
    },
    {
        {
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "####################",
        },7,20
    },
    {
        {
            "         #         #",
            "        #         # ",
            "       #         #  ",
            "      #         #   ",
            "     #         #    ",
            "    #         #     ",
            "   #         #      ",
            "  #         #       ",
            " #         #        ",
            "#         #         ",
        },8,20
    },
    {
        {
            "#         #         ",
            " #         #        ",
            "  #         #       ",
            "   #         #      ",
            "    #         #     ",
            "     #         #    ",
            "      #         #   ",
            "       #         #  ",
            "        #         # ",
            "         #         #",
        },9,20
    },
    {
        {
            "#                  #",
            " #                # ",
            "  #              #  ",
            "   #            #   ",
            "    #          #    ",
            "     #        #     ",
            "      #      #      ",
            "       #    #       ",
            "        #  #        ",
            "         ##         ",
        },10,20
    },
    {
        {
            "         ##         ",
            "        #  #        ",
            "       #    #       ",
            "      #      #      ",
            "     #        #     ",
            "    #          #    ",
            "   #            #   ",
            "  #              #  ",
            " #                # ",
            "#                  #",
        },11,20
    },
    {
        {
            "#                  #",
            " #                # ",
            "  #              #  ",
            "   #            #   ",
            "    #          #    ",
            "         ##         ",
            "        #  #        ",
            "       #    #       ",
            "      #      #      ",
            "     #        #     ",
        },12,20
    },
    {
        {
            "    #          #    ",
            "   #            #   ",
            "  #              #  ",
            " #                # ",
            "#                  #",
            "     #        #     ",
            "      #      #      ",
            "       #    #       ",
            "        #  #        ",
            "         ##         ",
        },13,20
    },
    {
        {
            "                    ",
            "                    ",
            "#####          #####",
            "                    ",
            "                    ",
            "     #        #     ",
            "      #      #      ",
            "       #    #       ",
            "        #  #        ",
            "         ##         ",
        },14,20
    },
    {
        {
            "                    ",
            "                    ",
            "#####          #####",
            "                    ",
            "                    ",
            "         ##         ",
            "        #  #        ",
            "       #    #       ",
            "      #      #      ",
            "     #        #     ",
        },15,20
    },
    {
        {
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "#    ##########    #",
            " #                # ",
            "  #              #  ",
            "   #            #   ",
            "    #          #    ",
        },16,20
    },
    {
        {
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
        },17,20
    },
    {
        {
            "#                  #",
            " #                # ",
            "  #              #  ",
            "   #            #   ",
            "    #          #    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "     ##########     ",
        },18,20
    },
    {
        {
            "##                  ",
            "  ##                ",
            "    ##              ",
            "      ##            ",
            "        ##          ",
            "          ##        ",
            "            ##      ",
            "              ##    ",
            "                ##  ",
            "                  ##",
        },19,20
    },
    {
        {
            "                  ##",
            "                ##  ",
            "              ##    ",
            "            ##      ",
            "          ##        ",
            "        ##          ",
            "      ##            ",
            "    ##              ",
            "  ##                ",
            "##                  ",
        },20,20
    },
};

void print(int id_map)
{
    for(int i = 0 ; i < 10 ; i ++){
        for(int j = 0 ; j < 20 ; j ++){
            printf("%c",map[id_map].map[i][j]);
        }
        printf("\n");
    }
    for(int i = 0 ; i < 20 ; i ++){
        if(i == now) printf("^");
        else printf("-");
    }
    return ;
}

void win(){
    system("cls");
    printf("你胜利了！\n");
    printf("是否重来(y/n):");
    char ch;
    scanf("%c",&ch);
    if(ch == 'y' || ch == 'Y'){
    	system("cls");
		main();
	}
    exit(0);
}

void get(int id_map)
{
    int i = 10;
    while(i>=0)
    {
        if(map[id_map].map[i][now]=='#'){
            map[id_map].map[i][now]=' ';
            map[id_map].zhadan--;
            break;
        }
        i--;
    }
    if(map[id_map].zhadan==0) win();
}

void input(int& x)
{
    printf("请输入关卡号(1-20):");
    char ch;
    scanf("%d",&x);
    x--;
    return ;
}

int main()
{
    int n;
    input(n);
    while(true)
    {
        system("cls");
        print(n);
        char ch;
        ch = _getch();
        if(ch == '\015'||ch== ' '){
            get(n);
        }
        if(ch == 'a' || ch == 'A')
        {
            if(now == 0)
            {
                continue;
            }
            now--;
        }
        if(ch == 'd' || ch == 'D')
        {
            if(now == 19)
            {
                continue;
            }
            now++;
        }
    }
    return 0;
}


#else

#include <stdio.h>

#include <termios.h>
#include <unistd.h>

int _getch() {
    struct termios oldt, newt;
    tcgetattr(STDIN_FILENO, &oldt);
    newt = oldt;
    newt.c_lflag &= ~(ICANON | ECHO);
    tcsetattr(STDIN_FILENO, TCSANOW, &newt);
    
    int ch = getchar();
    tcsetattr(STDIN_FILENO, TCSANOW, &oldt);
    return ch;
}


#include <stdlib.h>
#include <new>
#include <string>
#include <cstring>

using namespace std;

struct node {
    char map[15][25];
    int id;
    int zhadan;
};

int now=0;
unsigned long long int fen = 0;
unsigned long long int zd  = 25;
unsigned long long int inf = 0xffffffffffffffff;
unsigned int mode = -1;

std::string mode_name[3] = {
	"休闲模式",
	"简单模式",
	"挑战模式"
};

int main();
class tmp1
{
	public:
		void _print()
		{
			switch(mode)
			{
				case 0:
				printf("积分:");
				break;
				case 1:
				printf("剩余子弹数:");
				break;
				case 2:
				break;
			}
			unsigned long long int num;
			if(mode == 0) num = fen;
			if(mode == 1) num = zd ;
			if(mode == 2) num = inf;
			
			printf("%lld",num);
		}
};

class tmp1 sb;

struct node map[25] = {
    {
        {
            "####################",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
        },1,20
    },
    {
        {
            "  #                 ",
            "    ##   #          ",
            "   #  #     #       ",
            "   # #    #         ",
            "  #   #  # #        ",
            "       #  ##        ",
            "        #  #        ",
            "                    ",
            "          #         ",
            "                    ",
        },2,20
    },
    {
        {
            "                    ",
            "###          ##   # ",
            " # #    #   #       ",
            "            #       ",
            " #    #  #          ",
            "            #   #   ",
            "    #   #           ",
            "    #       #       ",
            "                    ",
            "                    ",
        },3,20
    },
    {
        {
            "           #        ",
            "                    ",
            "     #   #   #  #   ",
            "      #             ",
            "      # #  #        ",
            "   ##               ",
            "         #  # # #   ",
            "      #       #     ",
            "    #               ",
            "            #  #    ",
        },4,20
    },
    {
        {
            " #   #    #         ",
            "    #          #    ",
            "   #    #  #        ",
            "#         #     #   ",
            "    #      #        ",
            "        #           ",
            "    #     #   #     ",
            "         #   #      ",
            "             #      ",
            "                    ",
        },5,20
    },
    {
        {
            "            #       ",
            "    #               ",
            "  ###    #  #   #   ",
            "       #      #   # ",
            "  #     #  #        ",
            "                #   ",
            "       #            ",
            "           #        ",
            "     #      #       ",
            "       #            ",
        },6,20
    },
    {
        {
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "####################",
        },7,20
    },
    {
        {
            "         #         #",
            "        #         # ",
            "       #         #  ",
            "      #         #   ",
            "     #         #    ",
            "    #         #     ",
            "   #         #      ",
            "  #         #       ",
            " #         #        ",
            "#         #         ",
        },8,20
    },
    {
        {
            "#         #         ",
            " #         #        ",
            "  #         #       ",
            "   #         #      ",
            "    #         #     ",
            "     #         #    ",
            "      #         #   ",
            "       #         #  ",
            "        #         # ",
            "         #         #",
        },9,20
    },
    {
        {
            "#                  #",
            " #                # ",
            "  #              #  ",
            "   #            #   ",
            "    #          #    ",
            "     #        #     ",
            "      #      #      ",
            "       #    #       ",
            "        #  #        ",
            "         ##         ",
        },10,20
    },
    {
        {
            "         ##         ",
            "        #  #        ",
            "       #    #       ",
            "      #      #      ",
            "     #        #     ",
            "    #          #    ",
            "   #            #   ",
            "  #              #  ",
            " #                # ",
            "#                  #",
        },11,20
    },
    {
        {
            "#                  #",
            " #                # ",
            "  #              #  ",
            "   #            #   ",
            "    #          #    ",
            "         ##         ",
            "        #  #        ",
            "       #    #       ",
            "      #      #      ",
            "     #        #     ",
        },12,20
    },
    {
        {
            "    #          #    ",
            "   #            #   ",
            "  #              #  ",
            " #                # ",
            "#                  #",
            "     #        #     ",
            "      #      #      ",
            "       #    #       ",
            "        #  #        ",
            "         ##         ",
        },13,20
    },
    {
        {
            "                    ",
            "                    ",
            "#####          #####",
            "                    ",
            "                    ",
            "     #        #     ",
            "      #      #      ",
            "       #    #       ",
            "        #  #        ",
            "         ##         ",
        },14,20
    },
    {
        {
            "                    ",
            "                    ",
            "#####          #####",
            "                    ",
            "                    ",
            "         ##         ",
            "        #  #        ",
            "       #    #       ",
            "      #      #      ",
            "     #        #     ",
        },15,20
    },
    {
        {
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "#    ##########    #",
            " #                # ",
            "  #              #  ",
            "   #            #   ",
            "    #          #    ",
        },16,20
    },
    {
        {
            "                    ",
            "####            ####",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "    ############    ",
        },17,20
    },
    {
        {
            "#                  #",
            " #                # ",
            "  #              #  ",
            "   #            #   ",
            "    #          #    ",
            "                    ",
            "                    ",
            "                    ",
            "                    ",
            "     ##########     ",
        },18,20
    },
    {
        {
            "##                  ",
            "  ##                ",
            "    ##              ",
            "      ##            ",
            "        ##          ",
            "          ##        ",
            "            ##      ",
            "              ##    ",
            "                ##  ",
            "                  ##",
        },19,20
    },
    {
        {
            "                  ##",
            "                ##  ",
            "              ##    ",
            "            ##      ",
            "          ##        ",
            "        ##          ",
            "      ##            ",
            "    ##              ",
            "  ##                ",
            "##                  ",
        },20,20
    },
};
void xiuxian();
#ifdef __WIN32__
const char* clean="cls";
#else
const char* clean="clear";
#endif

void print(int id_map)
{
	system(clean);
    for(int i = 0 ; i < 10 ; i ++){
        for(int j = 0 ; j < 20 ; j ++){
            printf("%c",map[id_map].map[i][j]);
        }
        printf("\n");
    }
    for(int i = 0 ; i < 20 ; i ++){
        if(i == now) printf("^");
        else printf("-");
    }
    printf("\n");
    sb._print();
    return ;
}

void win(){
    system(clean);
    printf("你胜利了！\n");
    printf("是否重来(y/n):");
    char ch;
    scanf("%c",&ch);
    if(ch == 'y' || ch == 'Y'){
    	system(clean);
    	fen = 0;
		zd  = 25;
		inf = 0xffffffffffffffff;
		xiuxian();
	}
    exit(0);
}

void end()
{
	printf("你输了...");
	_getch();
	exit(0);
}

void get(int id_map)
{
    int i = 10;
    while(i>=0)
    {
        if(map[id_map].map[i][now]=='#'){
			if(mode == 0) 
			{
				fen+=20;
			}
            map[id_map].map[i][now]=' ';
            map[id_map].zhadan--;
            break;
        }
        i--;
    }
    if(mode == 1) zd--;
    if(map[id_map].zhadan==0) win();
    if(zd == 0) end();
    
}

void input(int& x)
{
    printf("请输入关卡号(1-20):");
    scanf("%d",&x);
    x--;
    system(clean);
    return ;
}

void xiuxian()
{
    int n;
    input(n);
    system(clean);
    for(int i=0;i<100;i++);
    for(int i=0;i<100;i++);
    for(int i=0;i<100;i++);
    for(int i=0;i<100;i++);
    for(int i=0;i<100;i++);
    bool flag = false;
    while(true)
    {
		if(flag){
			system(clean);
			for(int i=0;i<100;i++);
			print(n);
			char ch;
			ch = _getch();
			system(clean);
			for(int i=0;i<100;i++);
			for(int i=0;i<100;i++);
			for(int i=0;i<100;i++);
			if(ch == '\015'||ch== ' '){
				get(n);
			}
			if(ch == 'a' || ch == 'A')
			{
				if(now == 0)
				{
					continue;
				}
				now--;
			}
			if(ch == 'd' || ch == 'D')
			{
				if(now == 19)
				{
					continue;
				}
				now++;
			}
		}
		flag = true;
		_getch();
    }
    return ;
}
unsigned int get_mode()
{
	int c = 0;
	while(true){
		printf("请选择模式:\n");
		printf("%c休闲模式\n%c简单模式\n%c挑战模式\n请选择(w/s):",(c==0?'>':' '),(c==1?'>':' '),(c==2?'>':' '));
		char ch;
		ch = _getch();
		if(ch == '\015'||ch== ' '){
			system(clean);
			for(int i=0;i<100;i++);
            return c;
        }
        if(ch == 'w' || ch == 'W')
        {
            if(c > 0)
            {
				c--;
			}
        }
        if(ch == 's' || ch == 'S')
        {
            if(c < 3)
            {
				c++;
			}
        }
        system(clean);
        for(int i=0;i<100;i++);
	}
}
int main()
{
	mode = get_mode();
	xiuxian();
	return 0;
}


#endif